// component/timer/timer.js
const moment = require('../../libs/moment.min');
const app = getApp();

Component({
  externalClasses: ['time-picker'],
  properties: {
    // 存储时间数据
    dateArr: {
      type: Array,
      value: 'default value',
    },
  //  这个组件用在什么页面,决定用什么数据
    type: {
      type: String,
      value: null
    }
  },
  data: {
    // 这里是一些组件内部数据
    baseDate: [
      // {
      //   date: "2018-11-11",
      //   startTime: '09:09',
      //   endTime: '21:21'
      // }
    ],
    // 存储当前时间组件内显示的时间
    multiArray: [
      // [],
      // [],
      // []
        ['今天', '明天', '后天'],
      [0, 1, 2, 3, 4, 5, 6],
      [0, 10, 20]
    ],
    // 当前索引
    multiIndex: [0, 0, 0],
    // 当前时分
    currentHours: moment().format('HH'),
    currentMinute: moment().format('mm')
  },
  methods: {
    // 初始化数据
    initData() {
      const self = this;
      const data = self.data.type == 'share' ? app.globalData.shareCarMeetingDate : app.globalData.newmeetingDate;
      console.log('初始化数据',self.data.type, data);
      const meetingDate = data.filter((item) => {
        console.log('初始化数据--', meetingDate);
        const time = item.value.split(' ');
        //console.log('time',time);
        let flag = true;
        // 默认一个小时
        let startTime = moment(time[0] + ' ' + time[1].split('#')[0]).add(30, 'minutes').format('YYYY-MM-DD HH:mm');
        let endTime = moment(time[0] + ' ' + time[1].split('#')[1]).format('YYYY-MM-DD HH:mm');
        // 如果当前时间比这天的开始时间大,则以当前时间作为开始时间 同时默认减少30分钟
        if (moment().format('YYYYMMDDHHmmss') > moment(startTime).format('YYYYMMDDHHmmss'))
          startTime = moment().add(30, 'minutes').format('YYYY-MM-DD HH:mm');
        // 如果开始时间大于等于结束时间,这个时间就作废了
        if (moment(startTime).format('YYYYMMDDHHmmss') >= moment(endTime).format('YYYYMMDDHHmmss')) flag = false;
        // 如果结束时间小于当前时间,这个时间就作废了
        if (moment(endTime).format('YYYYMMDDHHmmss') <= moment().format('YYYYMMDDHHmmss')) flag = false;
        // console.log(moment().add(30, 'minutes').format('YYYY-MM-DD HH:mm'), startTime, endTime, moment(endTime).format('YYYYMMDDHHmmss'), moment().format('YYYYMMDDHHmmss'));
        // console.log('startTime11123123123123',startTime,endTime);
        const parms = {
          date: moment(startTime).format('YYYY-MM-DD'),
          startTime: moment(startTime).format('HH:mm'),
          endTime: moment(endTime).format('HH:mm')
        }
        Object.assign(item, parms);
        return flag;
      });

      console.log('初始化数据2--', meetingDate);
      
      // 不在服务时间
      if (!meetingDate || meetingDate.length <= 0) {
        wx.showToast({
          title: '不在服务时间!',
          duration: 2000
        })
        return false;
      }
      self.setData({
        baseDate: meetingDate
      })
      console.log('parmsparmsparms', self.data.baseDate)
      //console.log('baseDate', self.data.baseDate);
    },
    // 这里是一个自定义方法
    //--------时间选择器----------
    pickerTap: function() {
      var self = this;
      const day = self.getDate();
      const hours = self.getHours()
      const minute = self.getMinute();
      
      console.log('pickerTap', self.data.baseDate,day,hours,minute);
      this.setData({
        multiArray: [day, hours, minute],
        multiIndex: [0, 0, 0]
      });

    },
    // 某一列改变时回调
    bindMultiPickerColumnChange: function(e) {
      var self = this;
      self.data.multiIndex[e.detail.column] = e.detail.value;
      // 然后再判断当前改变的是哪一列,如果是第1列改变
      if (e.detail.column <= 0) self.data.multiArray[1] = self.getHours();
      if (e.detail.column <= 1) self.data.multiArray[2] = self.getMinute();
      this.setData({
        multiArray: self.data.multiArray,
        multiIndex: self.data.multiIndex
      });
    },

    // 获取天数据
    getDate() {
      return this.data.baseDate.map((item) => {
        console.log('basedata11', item);
        return item.date;
      })
    },
    // 获取小时数据
    getHours() {
      const self = this;
      let hours = []
      //根据初始数据时间
      const strHours = self.data.baseDate[self.data.multiIndex[0]].startTime.split(':')[0];
      const endHours = self.data.baseDate[self.data.multiIndex[0]].endTime.split(':')[0];

      this.data.multiIndex[1] = 0;
      //console.log('self.data.currentHours', parseInt(self.data.currentHours))
      // if (self.data.currentHours >= endHours) {
      //   hours.push('当前时间不可下单')
      // } else {
      for (var i = strHours; i <= endHours; i++) {
        hours.push(~~i <= 9 ? '0' + ~~i : i.toString());
      }
      return hours;
    },
    // 获取分钟数据
    getMinute() {
      let minute = [];
      let startMinute = 0;
      let endMinute = 60;
      //console.log(this.data.baseDate[this.data.multiIndex[0]])
      const sm = this.data.baseDate[this.data.multiIndex[0]].startTime.split(':')[1];
      const em = this.data.baseDate[this.data.multiIndex[0]].endTime.split(':')[1];
      this.data.multiIndex[2] = 0;
      console.log(startMinute, endMinute)
      // 如果日时是开始日期,分从那天开始时间算
      if (this.data.multiIndex[1] == 0) startMinute = sm;
      // 如果日时是结束时间,分从那天结束时间
      console.log(this.data.multiIndex[1], this.data.multiArray[1])
      if (this.data.multiIndex[1] == this.data.multiArray[1].length - 1) endMinute = em;
      console.log(startMinute, endMinute)

      for (let i = ~~startMinute; i < ~~endMinute; i += 10) {
        minute.push(~~i <= 9 ? '0' + ~~i : i.toString());
      }
      // if (startMinute > 50) minute.push(startMinute);
      if (endMinute < 10) minute.push(endMinute);
      return minute
    },

    // 值改变时回调
    bindStartMultiPickerChange(e) {
      var that = this;
      var time = [{
        monthDay: this.data.multiArray[0][e.detail.value[0]],
        hours: this.data.multiArray[1][e.detail.value[1]],
        minute: this.data.multiArray[2][e.detail.value[2]],
      }]

      //console.log('---', time)
      this.triggerEvent('onchange', time)
    },
  },

  // 生命周期函数
  ready() {
    this.initData();

  }
})